package tk.mynoteapp.dev;

import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.crypto.digest.MD5;

import java.security.MessageDigest;
import java.text.SimpleDateFormat;
import java.util.stream.IntStream;

public class Sha1 {
    private static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5',
            '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };

    private static String getFormattedText(byte[] bytes) {
        int len = bytes.length;
        StringBuilder buf = new StringBuilder(len * 2);
        // 把密文转换成十六进制的字符串形式
        for (int j = 0; j < len; j++) {
            buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);
            buf.append(HEX_DIGITS[bytes[j] & 0x0f]);
        }
        return buf.toString();
    }

    public static String encode(String str) {
        if (str == null) {
            return null;
        }
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
            messageDigest.update(str.getBytes());
            return getFormattedText(messageDigest.digest());
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
//        System.out.println(encode("352103"));
//        String[] strs = {
//                "18910485073",
//        };
//        for (String str : strs) {
//            //System.out.println(str.substring(5, str.length()));
//            System.out.println(MD5.create().digestHex(str.substring(5, str.length())));
//        }

//        String dd = "2022-10-27 23:59:59";
//        DateTime dateTime = DateUtil.parse(dd, "yyyy-MM-dd HH:mm:ss");
//        System.out.println(dateTime.getTime());
//        System.out.println(DateUtil.format(dateTime, "yyyy-MM-dd HH:mm:ss"));
//        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        System.out.println(format.format(dateTime));

        IntStream.rangeClosed(1, 10).forEach(i -> {
            System.out.println(i);
        });
    }
}
